package com.leyou.item.dto;

import com.leyou.common.dto.BaseDTO;
import com.leyou.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CategoryDTO extends BaseDTO {
    // 属性有 ID ，name ,parentId,isParent,sort
    private Long id;
    private String name;
    private Long parentId;
    private Boolean isParent;
    private Integer sort;
    //引入 父类的构造函数
    public CategoryDTO(BaseEntity entity) {
        /*从Entity转为DTO
                * @param entity 任意实体*/
        super(entity);
    }
    /*
     * 将PO集合转为DTO集合
     * @param list PO对象的集合
     * @param <T> PO的类型
     * @return DTO集合
    */
    public static <T extends BaseEntity> List<CategoryDTO> convertEntityList(Collection<T> List) {
        if(List == null) {
            return Collections.emptyList();
        }
        //数据库查询List元素个数，决定循环次数；每次循环做的逻辑  执行CategoryDTO的构造函数
        //构造函数的目的：po转换为DTO ,最后返回转换后的DTO集合
        return List.stream().map(CategoryDTO::new).collect(Collectors.toList());
    }

}
